<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>数组增强</title>
</head>
<body>
    <p></p>
    <script>
        //2.4.1 扩展运算符
        // function func(x,y){
        //     return x+y;
        // }
        // const number=[4,38];
        // let result=func(...number);//扩展运算符就是三个点(...)。
        //                            //用法：将一个数组转为用逗号分开的参数序列，主要用于函数的调用。
        // console.log(result);
        
        //使用Array.form方法
        // let arrayLike={//Array.form用于将两类对象转化为真正数组：类似数组的对象(array-like object)
        //     '0':'a',   //和可遍历的对象(包括es6新增的数据结构set和map)
        //     "1":'b',
        //     '2':'c',
        //     length:3//类数组对象必须包含length属性，且元素属性名必须是数值或者是可转化为数值的字符。
        // };
        // //es5的写法
        // var arr1=[].slice.call(arrayLike);
        // console.log(arr1);//['a', 'b', 'c']
        // //es6写法
        // let arr2=Array.from(arrayLike);
        // console.log(arr2);//Array.form()能使类数组转为真正的数组。

        

        //NodeList对象
        // let ps=document.querySelectorAll('p');
        // let ps2=Array.from(ps);
        // console.log(ps2);//通过Array.from(方法将这个对象真正的转化为数组)        
        

        //2.4.3Array.of()

        //利用Array构造函数的问题
        // let a=[];
        // let b=Array(3);
        // let c=Array(3,11,8);
        // console.log(a);//[]
        // console.log(b);//[空属性x3]
        // console.log(c);//[3,11,8]
        
        //使用Array.of()方法构造数组
        // let a=Array.of();
        // let b=Array.of(undefined);
        // let c=Array.of(3);
        // let d=Array.of(3,11,8);
        // console.log(a);//[]
        // console.log(b);//[undefined]
        // console.log(c);//[3]
        // console.log(d);//[3,11,8]
        //Array.of()总是返回参数值组成的数组，如果没有参数返回空数组.

        //2.4.4数组实例方法

        //使用箭头函数作为回调函数找出数组中第一个大于2的元素。
        let arr=Array.of(2,4,6,8);
        console.log(arr.find(item=>item>2));//4

        //findIndex方法
        let arr2=Arr=Array.of(1,2,1,3,6);
        console.log(arr2.findIndex(item=>item==6));//4

        //数组空位处理为undefined
        console.log([,1].findIndex(n=>true));//0

        //fill方法
        let arr1=Array.of(1,2,3,4);
        //fill 第一个参数：用来填充值
            // 第二个参数：被填充的起始索引
            // 第三个参数(可选)：被填充的结束索引，默认为数组的末尾
        console.log(arr1.fill(0,1,2));//[1,0,3,4]  被填充的启始结束位置相当于[启，结束)

    </script>
</body>
</html>